# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：HelloWorld
#   文件名：4.4 修改元素.py
# 开发时间：2021/3/21 17:43

# 创建一个列表
stu = ['孙悟空', '猪八戒', '沙和尚', '唐僧', '白骨精', '蜘蛛精', '六耳猕猴', '玉皇大帝']
print(stu)


# 更新元素
# 方法一：通过索引
stu[4] = '白龙马'
print(stu)

# 方法二：通过切片
# stu[0:3] = 'szs'
# print(stu)

# 给切片进行赋值时，必须传递一个序列，只能使用序列
# stu[0:3] = 123
# #ypeError: can only assign an iterable
stu[0:3] = ['铁扇公主', '红孩儿', '牛魔王']

# stu[0:3] =  'szs1' # 字符串个数超出切片范围同样可以修改第4位元素
stu[0:0] = ['混世魔王']  # 因为0:0区间无元素，所以向stu列表0位置插入一个元素
print(stu)

# 切片有步长的情况，赋值序列的个数必须与切片一致
# print(stu[::3])
# 情况一：
# stu[::2] = ['牛魔王']
# #ValueError: attempt to assign sequence of size 1 to extended slice of size 3
# 以上报错是因为，赋值序列元素的个数，少于切片元素个数
# 情况二：
# stu[::3] = ['牛魔王', '蜈蚣精', '铁鸡精', '蛇精']
# ValueError: attempt to assign sequence of size 4 to extended slice of size 3
# 以上报错是因为，赋值序列元素的个数，多于切片元素个数
# 情况三：
# stu[::3] = ['牛魔王', '蜈蚣精', '蛇精']
# print(stu)
# # 更新成功

# 方法三： 增补函数s.append()
stu.append("哪吒")
print(stu)

# 删除元素
# 方法一：del
# 情况1，按照索引
# del stu[7]
# print(stu)
# 情况2，切片方式
# print(stu[::3])
# del stu[::3]
# print(stu)
# 方法二：空列表
stu[0:4] = []
print(stu)

# 以上操作只适用于 可变序列
# 具体操作可以看manuals文档The Python Standard Library >  Built in Types  > Sequence type(序列类型)

